#include "WOP_ArrayRef_Entry.h"
#include "WOP_Array_Entry.h"
#include <cassert>
#include "Command_Agent.h"
#include "WOPM.h"
//這個include WOPM是經由VC ++給予的"新增include目錄"功能，把前方的路徑省略
//所以如果換其他的IDE發現路徑錯誤，請自行更改路徑。
//元件原位址:"wopm/WOPM.h"
#include <iostream>
using namespace std;


WOP_ArrayRef_Entry::WOP_ArrayRef_Entry(string s,WOP_Entry* parent){//被程式unfold出來的(top = false)
	init(s,parent);
}
WOP_ArrayRef_Entry::WOP_ArrayRef_Entry(string s){//user手動檢視的 (top = true)
	init(s,NULL);
}

void WOP_ArrayRef_Entry::unfold(){//展開Array_Entry的內容
	// assert(_updated);

	WOPM* wop = WOPM::getInstance();
	//0.檢查ref的value是否合法。OK，ArrayRef指到的位址格式未定。
	//if(_value.find_first_of('@')==-1)		
		//return;

	//1.檢查是否已unflod，如果en不是NULL，表示已經被展開過了，我們就不做事。
	WOP_Array_Entry* en = (WOP_Array_Entry*)wop->search(_value);
	if(en != NULL)
		return;
	
	//2.製作一個Array_Entry，加入WOP中，並要求Array作出自己的子元素
	assert(false); // under construction for debugging
	en = new WOP_Array_Entry(_value,NULL);	
	wop->addEntry(en);	
}